1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.base;
18
19 import com.google.common.annotations.GwtCompatible;
20 import com.google.common.testing.SerializableTester;
21
22 import junit.framework.TestCase;
23
24 import java.lang.annotation.Retention;
25 import java.lang.annotation.RetentionPolicy;
26
27
28
29
30
31
32 @GwtCompatible(emulated = true)
33 public class EnumsTest extends TestCase {
34
35 private enum TestEnum {
36 CHEETO,
37 HONDA,
38 POODLE,
39 }
40
41 private enum OtherEnum {}
42
43 public void testGetIfPresent() {
44 assertEquals(Optional.of(TestEnum.CHEETO), Enums.getIfPresent(TestEnum.class, "CHEETO"));
45 assertEquals(Optional.of(TestEnum.HONDA), Enums.getIfPresent(TestEnum.class, "HONDA"));
46 assertEquals(Optional.of(TestEnum.POODLE), Enums.getIfPresent(TestEnum.class, "POODLE"));
47
48 assertTrue(Enums.getIfPresent(TestEnum.class, "CHEETO").isPresent());
49 assertTrue(Enums.getIfPresent(TestEnum.class, "HONDA").isPresent());
50 assertTrue(Enums.getIfPresent(TestEnum.class, "POODLE").isPresent());
51
52 assertEquals(TestEnum.CHEETO, Enums.getIfPresent(TestEnum.class, "CHEETO").get());
53 assertEquals(TestEnum.HONDA, Enums.getIfPresent(TestEnum.class, "HONDA").get());
54 assertEquals(TestEnum.POODLE, Enums.getIfPresent(TestEnum.class, "POODLE").get());
55 }
56
57 public void testGetIfPresent_caseSensitive() {
58 assertFalse(Enums.getIfPresent(TestEnum.class, "cHEETO").isPresent());
59 assertFalse(Enums.getIfPresent(TestEnum.class, "Honda").isPresent());
60 assertFalse(Enums.getIfPresent(TestEnum.class, "poodlE").isPresent());
61 }
62
63 public void testGetIfPresent_whenNoMatchingConstant() {
64 assertEquals(Optional.absent(), Enums.getIfPresent(TestEnum.class, "WOMBAT"));
65 }
66
67
68
69
70
71
72
73 public void testStringConverter_convert() {
74 Converter<String, TestEnum> converter = Enums.stringConverter(TestEnum.class);
75 assertEquals(TestEnum.CHEETO, converter.convert("CHEETO"));
76 assertEquals(TestEnum.HONDA, converter.convert("HONDA"));
77 assertEquals(TestEnum.POODLE, converter.convert("POODLE"));
78 assertNull(converter.convert(null));
79 assertNull(converter.reverse().convert(null));
80 }
81
82 public void testStringConverter_convertError() {
83 Converter<String, TestEnum> converter = Enums.stringConverter(TestEnum.class);
84 try {
85 converter.convert("xxx");
86 fail();
87 } catch (IllegalArgumentException expected) {
88 }
89 }
90
91 public void testStringConverter_reverse() {
92 Converter<String, TestEnum> converter = Enums.stringConverter(TestEnum.class);
93 assertEquals("CHEETO", converter.reverse().convert(TestEnum.CHEETO));
94 assertEquals("HONDA", converter.reverse().convert(TestEnum.HONDA));
95 assertEquals("POODLE", converter.reverse().convert(TestEnum.POODLE));
96 }
97
98 public void testStringConverter_nullConversions() {
99 Converter<String, TestEnum> converter = Enums.stringConverter(TestEnum.class);
100 assertNull(converter.convert(null));
101 assertNull(converter.reverse().convert(null));
102 }
103
104 public void testStringConverter_serialization() {
105 SerializableTester.reserializeAndAssert(Enums.stringConverter(TestEnum.class));
106 }
107
108 @Retention(RetentionPolicy.RUNTIME)
109 private @interface ExampleAnnotation {}
110
111 private enum AnEnum {
112 @ExampleAnnotation FOO,
113 BAR
114 }
115 }
116